#ifndef UTILS_H
#define UTILS_H

#include <json-c/json.h>
#include <time.h>

extern const char* secret ;

// Base64 编解码
char* base64_encode(const unsigned char* input, int length);
unsigned char* base64_decode(const char* input, int* out_length);
char* base64_url_encode(const unsigned char* input, int length);
unsigned char* base64_url_decode(const char* input, int* out_length);

// HMAC-SHA256 签名
char* hmac_sha256_sign(const char* key, const char* data);

// JWT 相关函数
char* generate_jwt_token(const char* secret, int user_id, const char* username, 
                         const char* avatar_initials, const char* avatar_gradient);
int verify_jwt_token(const char* token, const char* secret);
struct json_object* parse_jwt_payload(const char* token);

// Payload 解析辅助函数
int get_user_id_from_payload(struct json_object* payload);
const char* get_username_from_payload(struct json_object* payload);
void get_avatar_info_from_payload(struct json_object* payload, const char** initials, const char** gradient);

// Token 过期检查
int is_token_expiring_soon(const char* token, int threshold_seconds);

// 生成随机秘钥
void generate_secret_key(char *key, int length) ;

#endif // UTILS_H